#include <iostream>
#include <string.h>
#include "Time.hpp"
#include "Fifo.hpp"
#include "ShareMemory.hpp"

int main()
{
    std::cout << "time: " << GetCurrTime() << std::endl;
    std::cout << "self pid: " << getpid() << std::endl;
    shm.CreateShm();
    shm.AttachShm();

    //shm.ShmMeta();

    gpipe.OpenPipeForRead();
    sleep(10);
    // 这里进行IPC
    struct data *image = (struct data *)shm.GetAddr();
    // std::cout << "server 虚拟地址: " << strinfo << std::endl;
    // printf("server 虚拟地址: %p\n", strinfo);

    while (true)
    {
        gpipe.Wait();

        printf("status: %s\n", image->status);
        printf("lasttime: %s\n", image->lasttime);
        printf("image: %s\n", image->image);
        strcpy(image->status, "过期");
    }

    // sleep(10);
    shm.DetachShm();
    shm.DeleteShm();
    return 0;
}

// int main()
// {
//     //1.创建key
//     key_t k = ::ftok(gpath.c_str(),gprojId);
//     if(k < 0)
//     {
//         std::cerr << "ftok error "<<std::endl;
//         return 1;
//     }
//     std::cout << "k : "<<ToHex(k)<<std::endl;

//     //2.创建共享内存
//     int shmid = ::shmget(k,gshmsize,IPC_CREAT|IPC_EXCL|gmode);
//     if(shmid < 0)
//     {
//         std::cerr << "shmid error"<<std::endl;
//         return 2;
//     }
//     std::cout <<"shmid : "<<shmid<<std::endl;

//     //3.共享内存挂接到自己的地址空间
//     void *ret = ::shmat(shmid,nullptr,0);
//     std::cout <<"attach done "<<(long long)ret <<std::endl;

//     sleep(5);

//     //4.删除共享内存
//     shmctl(shmid,IPC_RMID,nullptr);
//     std::cout <<"delete done "<<std::endl;
//     sleep(5);
//     return 0;
// }
